package com.ruoyi.manage.report.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.experimental.Tolerate;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.time.LocalDate;
import java.util.List;


/**
 * 企业贷款信息对象 enterprise_loan_info
 *
 * @author ruoyi
 * @date 2025-10-02
 */
@Data
@ApiModel(value="企业贷款信息对象", description="企业贷款信息")
@TableName("enterprise_loan_info")
@Builder
public class EnterpriseLoanInfo extends BaseEntity implements Serializable {

    private static final long serialVersionUID=1L;


    /**
     *  平台ID
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "平台ID")
    @ApiModelProperty(value = "平台ID")
    @NotNull(message = "平台ID不能为空")
    private  Long  platformId;

    /**
     *  统一社会信用代码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "统一社会信用代码")
    @ApiModelProperty(value = "统一社会信用代码")
    @NotBlank(message = "统一社会信用代码不能为空")
    private  String  uniscId;

    /**
     *  企业名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "企业名称")
    @ApiModelProperty(value = "企业名称")
    @NotBlank(message = "企业名称不能为空")
    private  String  enterpriseName;

    /**
     *  实名认证
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "实名认证")
    @ApiModelProperty(value = "实名认证")
    private  String  realNameCertification;

    /**
     *  经办人姓名认证
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "经办人姓名认证")
    @ApiModelProperty(value = "经办人姓名认证")
    private  String  operatorName;

    /**
     *  经办人身份认证
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "经办人身份认证")
    @ApiModelProperty(value = "经办人身份认证")
    private  String  operatorIdentity;

    /**
     *  经办人证件认证
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "经办人证件认证")
    @ApiModelProperty(value = "经办人证件认证")
    private  String  operatorCardNo;

    /**
     *  注册资本（万元）
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "万=元")
    @Excel(name = "注册资本", readConverterExp = "万=元")
    @ApiModelProperty(value = "注册资本",notes="万=元")
    private  BigDecimal  registeredCapital;

    /**
     *  经营期限类型：1-长期，2-短期
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "经营期限类型：1-长期，2-短期")
    @ApiModelProperty(value = "经营期限类型：1-长期，2-短期")
    private  String  operatingTimeLimitType;

    /**
     *  是否私营企业
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "是否私营企业")
    @ApiModelProperty(value = "是否私营企业")
    private  String  isPrivateEnterprise;

    /**
     *  是否可下贷款
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "是否可下贷款")
    @ApiModelProperty(value = "是否可下贷款")
    private  String  downLoan;

    /**
     *  贷款申请时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "贷款申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "贷款申请时间")
    private  Date  loanDate;

    /**
     *  贷款机构名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "贷款机构名称")
    @ApiModelProperty(value = "贷款机构名称")
    private  String  loanOrgName;

    /**
     *  贷款机构统一社会信用代码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "贷款机构统一社会信用代码")
    @ApiModelProperty(value = "贷款机构统一社会信用代码")
    private  String  loanOrgUniscId;

    /**
     *  贷款机构编码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "贷款机构编码")
    @ApiModelProperty(value = "贷款机构编码")
    private  String  loanOrgCode;

    /**
     *  贷款金额（元）
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "元=")
    @Excel(name = "贷款金额", readConverterExp = "元=")
    @ApiModelProperty(value = "贷款金额",notes="元=")
    private  BigDecimal  loanAmount;

    /**
     *  贷款年利率（%）
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "%=")
    @Excel(name = "贷款年利率", readConverterExp = "%=")
    @ApiModelProperty(value = "贷款年利率",notes="%=")
    private  BigDecimal  loanRate;

    /**
     *  担保方式：5-信用
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "担保方式：5-信用")
    @ApiModelProperty(value = "担保方式：5-信用")
    private  String  guaranteeMode;

    /**
     *  贷款期限（月）
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "月=")
    @Excel(name = "贷款期限", readConverterExp = "月=")
    @ApiModelProperty(value = "贷款期限",notes="月=")
    private  Long  maturity;

    /**
     *  还款方式：4-等额本息
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "还款方式：4-等额本息")
    @ApiModelProperty(value = "还款方式：4-等额本息")
    private  String  repaymentWays;

    /**
     *  状态：1-有效
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "状态：1-有效")
    @ApiModelProperty(value = "状态：1-有效")
    private  String  status;

    /**
     *  外部系统ID（唯一标识）
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Dict(readConverterExp = "唯=一标识")
    @Excel(name = "外部系统ID", readConverterExp = "唯=一标识")
    @ApiModelProperty(value = "外部系统ID",notes="唯=一标识")
    private  Long  externalSystemId;
    @TableField(exist = false)
    private List<String> ids;
    @Tolerate
    public EnterpriseLoanInfo(){}
}
